
/*
* created by Administrator on 2018/11/29
* 好的代码像粥一样,是得用时间和精力熬的。
*/
//异步操作同步化【写法】
// callback 回调函数
// 异步操作：将来某一个时间点执行的代码片段【发生事情】
// setInterval();
// setTimeout();
// ajax();
setTimeout(function () {
  console.log(5)
},5000);
// 5秒钟之后打印5
// 在打印完5之后再过10s打印10
// 在打印完10之后再过15s打印15
setTimeout(function () {
    console.log(5);
    setTimeout(function () {
        console.log(10) ;
        setTimeout(function () {
            console.log(15) ;
        },15000);
    },10000);
},5000);
// 同步操作：就在现在这个时间段马上要执行的代码片段 js中99%的代码默认同步
let a = 1;
console.log(a);
for(let i = 0;i<10;i++){
   try{
       if(i<5){
           console.log(i)
       }
   }catch (e) {
       console.log(e)
   }
}


// new Promise = promise

function delay(time,value) {
    return new Promise(function (resolve) {
        setTimeout(function () {
            resolve(value);
        }, time)
    });
}
// 正确案例
delay(5000,5)
    .then(function (value) {console.log(value);return delay(10000,10)})
    .then(function (value) {console.log(value);return delay(15000,15)})
    .then(function (value) {console.log(value)})
    .catch(function (error) {console.log(error)})
    .finally(function () {console.log()});//不管成功或失败都要执行它
// console.log(value); 回调，成功之后做的事
// let promise = new Promise(function (resolve,reject) {

// });

// 静态方法
// 把函数当对象处理
function delay(time,value) {
    return new Promise(function (resolve) {
        setTimeout(function () {
            resolve(value);
        }, time)
    });
}
let arr = [
    delay(5000,5),
    delay(3000,3),
    delay(1000,1)
];
Promise.all(arr).then(function (data) {console.log(data)});//并发
Promise.race(arr).then(function (data) {console.log(data)});//竞速


// 唯一标识符  Symbol
var a = Symbol('hello,world!');
console.log(a === a);//true
console.log(Symbol('hello,world!') === Symbol('hello,world!'));//false

function createPerson() {
    var name = Symbol('name');
    var age = Symbol('age');
    var gender = Symbol('gender');
   var res = {
       [name]: 'wuli',
       [age]:18,
       [gender]:false
   };
   console.log(res[name]);
   return res;
}

